SNS トピックの通知先を変更する方法を教えてください
困っていた内容
SNS トピックのサブスクリプションで指定している通知先メールアドレスを変更したいです。
SNS コンソールで通知先を変更しようと思ったのですがメールアドレスを入力する箇所が見つかりません。
どうやって通知先を変更したらいいでしょうか?
どう対応すればいいの?
Amazon SNS トピックの通知先(エンドポイント)を変更する方法はございません。
サブスクリプションを解除し、再度登録し直す必要があります。
SNS コンソールでは次のとおり操作してください。
サブスクリプションの解除方法
- SNS コンソールのトピックへアクセス
- 対象のトピック名をクリック
- 変更したいサブスクリプション対象を検索(エンドポイントのメールアドレスなどを検索欄へ入力)
- 変更したいサブスクリプションをチェック
- [削除] ボタンをクリック
- [削除] ボタンをクリック
サブスクリプションの再登録方法
- SNS コンソールのトピックへアクセス
- [サブスクリプションの作成] をクリック
- [プロトコル] を選択
- [エンドポイント] を入力
- [サブスクリプションの作成] をクリック
- (プロトコルが E メールなら)宛先のメールの Confirm リンクをクリック
どうして変更できないの?
Amazon SNS のような Pub/Sub メッセージングモデルは、以下のキーワードを理解することが重要です。
- メッセージ: 送信したい情報、Amazon SNS では基本的に JSON 文字列が該当する
- パブリッシャー(プロデューサー、出版者): メッセージの送信元
- サブスクライバー(コンシューマー、購読者): メッセージの送信先
- エンドポイント: メッセージの宛先
- トピック(ブローカー): メッセージを仲介し、出版(パブリッシュ)するもの
トピックを使ったメッセージ配信は、以下のような流れになります。
- サブスクライバーは自分の興味のあるトピックを購読します。
- パブリッシャーは送信先や送信方法を考慮せずに、トピックへメッセージを送信します。
- トピックはサブスクライバーが希望する方法(プロトコル)で、全サブスクライバーへメッセージを送信します。
以上を踏まえて、サブスクライバーが意図せずにエンドポイントが変更できてしまうと、興味のない、購読した覚えのないメッセージが届く状態となります。
購入した覚えのない定期便が届けられるようなイメージです。
Amazon SNS は Pub/Sub メッセージングモデルにしたがって、管理者側でトピックのエンドポイントを変更できず、サブスクライバーの意思によって購読/解除する仕組みになっていると思われます。
よって、エンドポイントを変更するにはサブスクライバーが購読を「解除」してから、再度「購読」し直す流れが正しいフローになります。
運用観点でのワンポイント
管理者の視点では「通知先を変更したいだけなのに、手間がかかるなー。」と思われるかもしれません。
しかしながら通知先の変更が管理者側でできてしまうと、メッセージングモデルの仕組みに綻びが生じます。
運用者も管理者視点だけではなく、利用者視点も持てると理解が捗ります。